package com.waitingresult.common.converter;

import com.waitingresult.common.base.domain.qo.BaseQo;

import java.util.List;

/**
 * All right reserved,Designed By WangShuai
 *
 * @author : WangShuai
 * @version : V1.0
 * @ClassName : BaseConverter
 * @Description : BO,VO,Entity 相互转换工具的基类, 集成下来之后, 通过注入 使用
 * Bo 不用转换,因为Bo是入参类型.
 * @date : 2021/9/9 10:42
 */
public interface BaseConverter<Q extends BaseQo, V, T> {

    /**
     * Bo 转换 Entity
     *
     * @param bo bo对象
     * @return 返回数据库实体类
     */
    T qoToEntity(Q bo);

    /**
     * entity集合 转Bo集合
     *
     * @param entityList Entity集合
     * @return boList 集合
     */
    List<Q> qoToEntity(List<T> entityList);

    /**
     * Bo 转换 Entity
     *
     * @param entity 实体类
     * @return 返回Vo对象
     */
    V entityToVo(T entity);

    /**
     * Bo集合转Entity集合
     *
     * @param entityList bo集合
     * @return Entity集合
     */
    List<V> entityToVo(List<T> entityList);

}
